Computing systems generate information. It is known in the art to store such information using a plurality of data storage media. In a redundant array of independent disks (“RAID”) configuration, information is stored in arrays of data storage media to provide fault tolerance and improved data access performance. RAID combines physical data storage media into a single logical unit either by using special hardware or software.
In a RAID 3, 4, 5, or 6 array configuration a process known as “data striping” is used in combination with parity data, i.e. encoded redundant information. In RAID 5, data and parity data, are distributed across all the data storage media in the array, but in RAIDs 3 and 4, parity data is not distributed across all storage media but is concentrated in a single parity storage media. In RAID 3, 4, and 5, row stripes are used and one set of parity data is associated with each row stripe. In RAID 6, both row stripes and diagonal stripes are used, and one set of parity is associated with each row stripe and another set of parity is associated with each diagonal stripe, for dual redundancy. In RAID 6, row parity may be concentrated in a single row parity storage media, and diagonal parity may be concentrated in a different single diagonal parity storage media, or row and diagonal parity may be distributed across all data storage media in the array. Each RAID stripe comprises a predetermined number of sequential logical block arrays.
By striping data and distributing the parity across all drives in the array, optimum performance is realized by minimizing constant access to a single drive. If a drive fails in a RAID 5 array configuration, data written to the failed drive can be rebuilt using the parity data on the remaining drives. If the array is configured with an online spare drive, the RAID rebuild begins automatically when a failed drive is detected. If the array is not configured with a spare drive, then the RAID rebuild begins after the failed drive is replaced.
To rebuild lost data, each lost stripe is read from the remaining drives in the array. The lost stripe is restored using exclusive-OR (“XOR”) operations performed by a RAID controller XOR engine. After the XOR engine restores the lost stripe, that restored stripe is written to the replacement or online spare drive. The rebuilt process involves (N−1) reads from the operational drives in the array and a single write to the replacement or online spare drive. When a stripe is fully restored, the rebuild process proceeds to restore the next lost stripe.
During the rebuild process, the array remains accessible to users. Using prior art methods, performance of data access during a RAID rebuild is, however, compromised.